A co-ROM containing a computer program listing appendix has been submitted and is herein incorporated by reference,. The CD-ROM contains a single ASC II text file, created on Mar. 26, 2002, 67 Kb in size.
The present invention relates generally to mass storage systems. More particularly, the invention relates to a fibre channel controller.
The processing power of CPUs, and the computer systems that contain them, has continued to double on the average of every two years over the past twenty years. However, the performance of mass storage devices and computer bus interconnections between mass storage devices and CPUs has not increased at the same rate. As a result, many modem computer systems may be limited in processing speed by the speed at which data can be accessed and transported between memory and peripheral devices, such as hard disk drives. In addition, computer systems may be limited by the amount of data that they can efficiently access.
The Fibre Channel (xe2x80x9cFCxe2x80x9d) architecture and protocol was developed in order to overcome the performance bottleneck of peripheral devices. The FC protocol is significantly faster than most existing networks, operating at transfer rates that exceed one gigabit per second in both directions simultaneously. In addition, the protocol is robust and can transport a variety of protocols, such as IP, SCSI, HIPPI and IPI.
A FC controller is an interface that enables the transfer of data between a host computer system and a fibre channel. Typically, such FC controllers include a dedicated microprocessor that coordinates the various tasks that enable the data transfer. The use of a microprocessor constrains the number of tasks that can be executed in parallel and thereby decreases the data transfer rate that can be achieved. Accordingly, a need exists for an improved FC controller that overcomes the obstacles of a serial execution stream and which achieves a faster data transfer rate.
The present invention pertains to a FC controller that interfaces between a host system and a 10-bit FC interface. The FC controller has the capacity to act as both a fibre channel protocol (FCP) initiator and a FCP target device. As a FCP initiator, the FC controller initiates SCSI I/O requests to a number of devices at the request of a host system. As a FCP target, the FC controller receives SCSI I/O requests from devices linked through the FC.
The FC controller can process both an inbound and outbound sequence simultaneously since it does not employ a processor-based architecture. Rather the FC controller relies on specialized circuitry that operates in a relatively independent manner so that multiple tasks are performed simultaneously thereby achieving a faster throughput and a higher data transfer rate.
A SCSI I/O request can be viewed as a FCP exchange having one or more sequences. A FCP exchange can consist of any number of inbound and/or outbound sequences. An outbound sequence transmits a command, data, and/or response phase to an initiator or target device and an inbound sequence receives a command, data, and/or response phase from an initiator or target device. A sequence can be composed of one or more frames which is the basic data unit in the FC protocol.
The host system and the FC controller communicate through an interface that includes a number of data structures and a protocol specifying how the data structures are interpreted. The data structures can include an exchange request queue (ERQ) that is used by the host system to initiate SCSI I/O requests, and a SCSI exchange state table (SEST). A SEST entry includes the information needed to process a SCSI I/O request and which indicates where to retrieve or store the incoming data and/or response. In addition, status information, in the form of a completion message, is posted in an inbound message queue (IMQ).
An initiator can send the target host system a SCSI I/O request which is received by the FC controller and stored in a single frame queue (SFQ). The host system then responds to the request by initiating the appropriate SCSI I/O request which is placed in the ERQ and by placing the necessary information to process the request in the SEST.
The FC controller includes an outbound control unit that performs those tasks needed to map a SCSI I/O request into one or more outbound sequences. In addition, the FC controller includes an inbound control unit that performs those tasks needed to process an inbound sequence or to map it to a SCSI I/O request. In addition, the inbound control unit may generate any additional outbound sequences that are needed to complete an exchange.
The outbound control unit can include an outbound sequence and exchange management unit, an outbound frame buffer unit, and an outbound frame engine. The outbound sequence and exchange management unit receives SCSI I/O requests, maps them into one or more outbound sequences, and assembles the corresponding frames in the outbound frame buffer unit. The outbound frames are encoded with cyclic redundancy check (CRC) data and converted into 10-bit characters by the outbound frame engine for transmission over the fibre channel. The outbound frame buffer unit is dual-ported so that frames can be assembled into the buffer unit simultaneously as they are read out of it.
The outbound sequence and exchange management unit can include an ERQ manager unit, a SCSI exchange manager outbound unit (SEM-OUT) and an outbound sequence manager unit (OSM). The ERQ manager unit retrieves host-initiated I/O requests that are stored in the ERQ and places them into the SEM-OUT unit. The SEM-OUT unit receives notice of pending outbound sequences from both the ERQ manager unit and a SEST link fetch manager unit (LFM). The SEM-OUT unit obtains the associated SEST entry for the pending outbound sequence and constructs an intermediate data structure referred to as an outbound descriptor block (ODB) to represent the requisite information needed to execute the outbound sequence. The ODB is then transmitted to the OSM. The OSM uses the ODB to assemble the data needed for the frames that correspond to the outbound sequence in the outbound frame buffer unit.
The inbound control unit includes an inbound fibre engine, an inbound frame buffer unit, and an inbound sequence and exchange management unit. The inbound fibre engine receives the inbound data which is encoded and converted into 8-bit bytes and stored in the inbound frame buffer unit.
The inbound sequence and exchange management unit processes the inbound frames. The unit stores the inbound data in a predetermined location indicated by the SEST and stores the inbound frames representing SCSI I/O requests initiated by another initiator device (otherwise known as unassisted frames) in the SFQ. Some inbound frames may indicate that an additional outbound sequence is warranted and as such the unit initiates the outbound sequence through the LFM. In addition, completion messages are generated for those frames that represent the end of a sequence and the end of an exchange.
The inbound sequence and exchange management unit includes an inbound data manager (IDM), a completion message channel (CMC), a fibre channel services unit (FCS), and a SCSI exchange manager inbound unit (SEM-IN). The IDM receives the inbound frames from the inbound frame buffer unit and enlists the assistance of the CMC, FCS, and SEM-IN units to process the frame data. The FCS unit processes the unassisted, bad, or unknown frames by indicating to the IDM the SFQ entry to store such frames. The SEM-IN unit assists the IDM in processing all other frames. The SEM-IN unit uses the LFM to obtain the associated SEST entry. The SEM-IN unit, in turn, interprets the SEST entry in order to instruct the IDM where to store the frame and/or its associated data. In addition, the SEM-IN unit notifies the LFM of any additional outbound sequences that need to be initiated in order to complete an outstanding exchange. The CMC unit is used to inform the IDM of an available IMQ entry that the IDM uses to store completion messages when a sequence and/or exchange is completed.
The outbound and the inbound control units are constructed such that they can operate relatively independent of each other. In addition, the components in each of the inbound and outbound control units are structured such that as many tasks as possible are performed concurrently in each component. In this manner, multiple I/O requests can be serviced concurrently thereby increasing the throughput and data transfer rate of the FC controller.